package de.hsos.ooad.nutzerverwaltung.interaktiv;

public abstract class Nutzer {
	/** Loginname des Nutzers */
	private String login;
	/** Passwort des Nutzers */
	private String passwort;
	
	/**
	 * Konstruiert einen Nutzer mit Standardwerten.
	 */
	public Nutzer() {
		setLogin("nutzer");
		setPasswort("passwort");
	}
	
	/**
	 * Konstruiert einen Nutzer mit den angegebenen Werten.
	 * @param login		Loginname des Nutzers
	 * @param passwort	Passwort des Nutzers
	 */
	public Nutzer(String login, String passwort) {
		this.setLogin(login);
		this.setPasswort(passwort);
	}

	/**
	 * Ermittelt den Loginnamen des Nutzers.
	 * @return der Loginname
	 */
	public String getLogin() {
		return login;
	}

	/**
	 * Ändert den Loginnamen des Nutzers.
	 * @param neuer Loginname
	 */
	public void setLogin(String login) {
		this.login = login;
	}

	/**
	 * Ermittelt das Passwort des Nutzers.
	 * @return das Passwort
	 */
	public String getPasswort() {
		return passwort;
	}

	/**
	 * Ändert das Passwort des Nutzers
	 * @param neues Passwort
	 */
	public void setPasswort(String passwort) {
		this.passwort = passwort;
	}

	/**
	 * Ueberprueft ob der Nutzer berechtigt ist, Daten zu bearbeiten.
	 * @return	'true' falls ja, 'false' falls nein
	 */
	boolean darfDatenBearbeiten() {
		if (this instanceof Projektadministrator
		||	this instanceof Systemadministrator
		||  this instanceof Entwickler) {
			return true;
		}
		return false;
	}
	
	/**
	 * Ueberprueft ob der Nutzer berechtigt ist, Tabellen zu bearbeiten.
	 * @return	'true' falls ja, 'false' falls nein
	 */
	boolean darfTabellenBearbeiten() {
		if (this instanceof Projektadministrator
		||	this instanceof Systemadministrator) {
			return true;
		}
		return false;
	}
	
	/**
	 * Ueberprueft ob der Nutzer berechtigt ist, neue Nutzer anzulegen.
	 * @return	'true' falls ja, 'false' falls nein
	 */
	boolean darfNutzerAnlegen() {
		if (this instanceof Projektadministrator) {
			return true;
		}
		return false;
	}
}
